From: Matthieu Gallien Date: Wed, 12 Feb 2025 17:48:47 +0000 (+0100) Subject: try to detect if naming rules are enabled on server before auto rename X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~2^2~50^2~4 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=f18a94fbfd3daf293481f7a5860614626a679244;p=nextcloud-desktop.git try to detect if naming rules are enabled on server before auto rename Signed-off-by: Matthieu Gallien --- diff --git a/src/libsync/discoveryphase.h b/src/libsync/discoveryphase.h index 3382ffc13..855758b1f 100644 --- a/src/libsync/discoveryphase.h +++ b/src/libsync/discoveryphase.h @@ -343,6 +343,11 @@ public: QStringList _listExclusiveFiles; + QStringList _forbiddenFilenames; + QStringList _forbiddenBasenames; + QStringList _forbiddenExtensions; + QStringList _forbiddenChars; + bool _hasUploadErrorItems = false; bool _hasDownloadRemovedItems = false; diff --git a/src/libsync/syncengine.cpp b/src/libsync/syncengine.cpp index d5018149b..25e6bf414 100644 --- a/src/libsync/syncengine.cpp +++ b/src/libsync/syncengine.cpp @@ -647,7 +647,6 @@ void SyncEngine::startSync() _discoveryPhase = std::make_unique(); _discoveryPhase->_leadingAndTrailingSpacesFilesAllowed = _leadingAndTrailingSpacesFilesAllowed; - _discoveryPhase->_shouldEnforceWindowsFileNameCompatibility = _shouldEnforceWindowsFileNameCompatibility; _discoveryPhase->_account = _account; _discoveryPhase->_excludes = _excludedFiles.data(); const QString excludeFilePath = _localPath + QStringLiteral(".sync-exclude.lst"); @@ -672,6 +671,24 @@ void SyncEngine::startSync() return; } + const auto accountCaps = _account->capabilities(); + const auto forbiddenFilenames = accountCaps.forbiddenFilenames(); + const auto forbiddenBasenames = accountCaps.forbiddenFilenameBasenames(); + const auto forbiddenExtensions = accountCaps.forbiddenFilenameExtensions(); + const auto forbiddenChars = accountCaps.forbiddenFilenameCharacters(); + + _discoveryPhase->_forbiddenFilenames = forbiddenFilenames; + _discoveryPhase->_forbiddenBasenames = forbiddenBasenames; + _discoveryPhase->_forbiddenExtensions = forbiddenExtensions; + _discoveryPhase->_forbiddenChars = forbiddenChars; + if (!forbiddenFilenames.isEmpty() && + !forbiddenBasenames.isEmpty() && + !forbiddenExtensions.isEmpty() && + !forbiddenChars.isEmpty()) { + _shouldEnforceWindowsFileNameCompatibility = true; + _discoveryPhase->_shouldEnforceWindowsFileNameCompatibility = _shouldEnforceWindowsFileNameCompatibility; + } + // Check for invalid character in old server version QString invalidFilenamePattern = _account->capabilities().invalidFilenameRegex(); if (invalidFilenamePattern.isNull()